package tangjl.timer.task.common;

import java.lang.reflect.ParameterizedType;

import org.apache.log4j.Logger;

/**
 * 定时任务祖类
 * @author 唐家林
 * @time 2015年4月22日
 */
public abstract class TimerTask<E> {
	private Logger logger = null;
	/**
	 * 实体类型
	 */
	private Class<E> entityClass;

	protected Class<E> getEntityClass() {
		return entityClass;
	}

	@SuppressWarnings("unchecked")
	public TimerTask() {
		ParameterizedType type = (ParameterizedType) getClass().getGenericSuperclass();
		this.entityClass = (Class<E>) type.getActualTypeArguments()[0];
		logger = Logger.getLogger(entityClass);
	}

	/**
	 * 日志打印统一接口
	 * @param msg
	 */
	public void log (String msg) {
		if (logger.isInfoEnabled()) {
			logger.info(msg);
		}
	}

	/**
	 * 定时任务入口
	 */
	abstract public void runTimerTask();
}
